package com.ruoyi.sl.service;

import java.math.BigDecimal;
import java.util.List;
import com.ruoyi.sl.domain.SlAttendance;
import com.ruoyi.sl.domain.SlRwork;

/**
 * 出勤天数Service接口
 * 
 * @author admin
 * @date 2024-06-11
 */
public interface ISlAttendanceService 
{
    /**
     * 查询出勤天数
     * 
     * @param attendanceId 出勤天数主键
     * @return 出勤天数
     */
    public SlAttendance selectSlAttendanceByAttendanceId(Long attendanceId);

    /**
     * 查询出勤天数列表
     * 
     * @param slAttendance 出勤天数
     * @return 出勤天数集合
     */
    public List<SlAttendance> selectSlAttendanceList(SlAttendance slAttendance);

    /**
     * 查询指定报工人和日期的出勤信息
     *
     * @param slRwork 报工人和报工日期
     * @return 出勤人集合
     */
    public List<SlAttendance> selectSlAttendanceByRwork(SlRwork slRwork);

    /**
     * 查询指定报工单的出勤人信息
     *
     * @param rfworkId 报工单ID
     * @return 出勤人集合
     */
    public List<SlAttendance> selectAllSlAttendanceByRfworkId(Long rfworkId);

    /**
     * 查询批量报工人和日期的出勤天数
     *
     * @param list 报工人和报工日期
     * @return 出勤天数
     */
    public BigDecimal selectAttendanceDaysByList(List<SlRwork> list);
    /**
     * 查询指定人的出勤天数
     *
     * @param list 报工人和报工日期
     * @param userName 指定人
     * @return 出勤天数
     */
    public BigDecimal selectAttendanceDaysByUser(List<SlRwork> list, String userName);

    //根据报工单ID，查询总结算天数
    public BigDecimal selectAllSettlementDaysByRfworkId(Long rfworkId);

    /**
     * 新增出勤天数
     * 
     * @param slAttendance 出勤天数
     * @return 结果
     */
    public int insertSlAttendance(SlAttendance slAttendance);

    /**
     * 修改出勤天数
     * 
     * @param slAttendance 出勤天数
     * @return 结果
     */
    public int updateSlAttendance(SlAttendance slAttendance);

    /**
     * 批量删除出勤天数
     * 
     * @param attendanceIds 需要删除的出勤天数主键集合
     * @return 结果
     */
    public int deleteSlAttendanceByAttendanceIds(Long[] attendanceIds);

    /**
     * 删除出勤天数信息
     * 
     * @param attendanceId 出勤天数主键
     * @return 结果
     */
    public int deleteSlAttendanceByAttendanceId(Long attendanceId);

    /**
     * 删除出勤天数信息
     *
     * @param slRwork 报工人和报工日期
     * @return 结果
     */
    public int deleteSlAttendanceByRwork(SlRwork slRwork);
}
